package Lambda表达式;

public class Lambda表达式的注意事项 {
    public static void main(String[] args) {

    }
}
/*
* Lambda表达式的注意事项
* 使用Lambda必须要有接口，并且接口中有且仅有一个抽象方法
* 必须要有上下文环境，才能推导出Lambda对应的接口
* 1.根据局部变量的赋值得知Lambda对应的接口
*   Runnable r=()->System.out.println("Lambda表达式")
* 2.根据调用方法的参数得知Lambda对应的接口
*   new Thread(()->System.out.println("Lambda表达式")).start()
* */
/*
* Lambda表达式和匿名内部类的区别【理解】
* 1.所需类型不同
* 匿名内部类：可以是接口，也可以是抽象类，还可以是具体类
* Lambda表达式：只能是接口
* 2.使用限制不同
* 如果接口中有且仅有一个抽象方法，可以使用Lambda表达式，也可以使用匿名内部类
* 如果接口中多于一个抽象方法，只能使用匿名内部类，而不能使用Lambda表达式
* 3.实现原理不同
* 匿名内部类：编译之后，产生一个单独的.class字节码文件
* Lambda表达式：编译之后，没有一个单独的.class字节码文件。对应的字节码会在运行的时候动态生成
* */